﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SSharp.Core.Evaluator {
	public static partial class Eval {
		/// <summary>
		/// Evaluates expressions like
		/// (quasiquote a)
		/// or more simply
		/// `a
		/// This is like quote, but supports unquoting.
		/// </summary>
		private class QuasiquoteEvaluator : SpecialFormEvaluator {
			public QuasiquoteEvaluator() : base("quasiquote") { }

			public override EvaluationResult Evaluate(object[] parameters, IEnvironment env) {
				if (parameters.Length != 1) {
					throw new SyntaxError("Quote accepts exactly one parameter. Given " + parameters.Length);
				}

				// qq: Implement QuasiquoteEvaluator
				throw new NotImplementedException("Quasiquote is not yet implemented");
			}
		}
	}
}
